using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace Avon
{
    /// <summary>
    /// a szallitok Data
    /// </summary>
    public struct SzallitokData
    {
        int m_SzallitoID;
        string m_SzallitoNev;
        string m_SzallitoEmail;
        string m_SzallitoTelefonszam;
        /// <summary>
        /// getterek es setterek
        /// </summary>
        public int SzallitoID
        {
            get { return m_SzallitoID; }
            set { m_SzallitoID = value; }
        }

        public string SzallitoNev
        {
            get { return m_SzallitoNev; }
            set { m_SzallitoNev = value; }
        }

        public string SzallitoEmail
        {
            get { return m_SzallitoEmail; }
            set { m_SzallitoEmail = value; }
        }

        public string SzallitoTelefonszam
        {
            get { return m_SzallitoTelefonszam; }
            set { m_SzallitoTelefonszam = value; }
        }
    }
    /// <summary>
    /// szallitok DAl osztaly amelyet szarmaztatom a DAL bol
    /// </summary>
    public class SzallitoDAL : DAL
    {
        /// <summary>
        /// le kerem a szallitok listajat adataikkal
        /// </summary>
        /// <returns>SQL parancs segitsegevel vissza teriti a szallitok listajat</returns>
        public List<SzallitokData> GetSzallitoList()
        {
            string query = "SELECT SzallitoID, Nev, Email,Telefonszam" +
                            " FROM Szallitok";

            string error = string.Empty;

            SqlDataReader rdr = ExecuteReader(query, ref error);
            List<SzallitokData> SzallitoList = new List<SzallitokData>();
            if (error == "OK")
            {
                while (rdr.Read())
                {
                    SzallitokData item = new SzallitokData();
                    item.SzallitoID = Convert.ToInt32(rdr[0]);
                    item.SzallitoNev = rdr[1].ToString();
                    item.SzallitoEmail = rdr[2].ToString();
                    item.SzallitoTelefonszam = rdr[3].ToString();

                    SzallitoList.Add(item);
                }
            }
            CloseDataReader(rdr);
            return SzallitoList;
        }
        /// <summary>
        /// uj szallito beszurasa
        /// </summary>
        /// <param name="Nev">a szallito neve</param>
        /// <param name="Email">a szallito email cime</param>
        /// <param name="Telefonszam">a szallito telefonszama</param>
        /// <returns>a beszuras SQL parancs eredmenyet teriti vissza</returns>
        public string BeszurSzallito(string Nev, string Email, string Telefonszam)
        {
            string query = "INSERT INTO Szallitok (Nev,Email,Telefonszam)" +
                                " VALUES ('" + Nev + "','" + Email + "','" + Telefonszam + "')";
            return ExecuteNonQuery(query);
        }
        /// <summary>
        /// ha egy szallitot mododistani szeretnek
        /// </summary>
        /// <param name="SzallitoID">szallito id-ja</param>
        /// <param name="Nev">a szallito neve</param>
        /// <param name="Email"> a szallito e-mail cime</param>
        /// <param name="Telefonszam">a szallito telefonszama</param>
        /// <returns>vissza teriti a modosit SQL parancs eredmenyet</returns>
        public string ModositSzallito(int SzallitoID, string Nev, string Email, string Telefonszam)
        {
            string query = "UPDATE Szallitok" +
                            " SET Nev = '" + Nev +
                            "', Email = " + Email +
                            ", Telefonszam = " + Telefonszam +
                            "' WHERE SzallitoID = " + SzallitoID;
            return ExecuteNonQuery(query);
        }
        /// <summary>
        /// ha torolni szeretnek egy szallitot
        /// </summary>
        /// <param name="SzallitoID">szallito idja</param>
        /// <returns>a torol SQL parancs eremnyet teriti vissza</returns>
        public string TorolSzallito(int SzallitoID)
        {
            string query = "DELETE FROM Szallitok WHERE SzallitoID = " + SzallitoID;
            return ExecuteNonQuery(query);
        }
        /// <summary>
        /// a szallitok darabjat szamoltam ki az alabbi metodussal
        /// </summary>
        /// <returns>SQL parancs eredmenye, mely vissza adja a szallitok szamat</returns>
        public int GetSzallitoNumber()
        {
            string query = "SELECT COUNT (*) FROM Szallitok", error = "";

            object value = ExecuteScalar(query, ref error);
            if (error == "OK")
            {
                return Convert.ToInt32(value);
            }
            else
            {
                return -1;
            }
        }
    }
    
}
